#ifndef MODBUSDEMO_H
#define MODBUSDEMO_H

#include<QObject>
#include<QModbusTcpClient>

namespace modbus {

class ModbusDemo:public QObject
{
    Q_OBJECT

public:
    explicit ModbusDemo(QObject *parent=nullptr);
    ~ ModbusDemo();

    // 连接到 Modbus 服务器
    bool connectToServer(const QString &ipAddress, quint16 port);
    // 断开与 Modbus 服务器的连接
    void disconnectFromServer();
    // 读取保持寄存器
    void readHoldingRegisters(int startAddress, int numberOfEntries);
    // 写入单个寄存器
    void writeSingleRegister(int address, quint16 value);

signals:
    // 读取数据成功的信号
    void readDataReceived(const QModbusDataUnit &unit);
    // 发生错误的信号
    void errorOccurred(const QString &errorString);

private slots:
    // 处理读取响应的槽函数
    void handleReadReady();
    // 处理写入响应的槽函数
    void handleWriteReady();
    // 处理 Modbus 错误的槽函数
    void handleError(QModbusDevice::Error error);
private:
    QModbusTcpClient *modbusClient;
};

}

#endif // MODBUSDEMO_H
